// 自动化 柯里化

function sum(a, b, c, d) {
  console.log(arguments);
  return a + b + c + d
}

// 柯里化
// 退出条件 闭包 
// sum是原函数 curry柯里化函数
// 柯里化的前提是无限累加
function curry(fn) {
  // 推迟执行
  return function sub(...args) {
    // 参数的数量
    if (args.length < fn.length) {
      console.log(args);
      return function () {
        return sub(...args, ...arguments)
      }
    }
    return fn(...args)
  }
}

let curried = curry(sum)
console.log(curried(1)(2)(3)(4));